import type { WhManagerBsTbRiskHazardsHandleGetPageUsingPost } from '@/genapi/wh';
import { whManagerBsTbRiskHazardsHandleGetPageUsingPost } from '@/genapi/wh';
import { usePage } from '@/hooks/use-page';

import type DetailDialog from './components/detail-dialog.vue';

export const [createState, injectState] = createInjectionState(
  () => {
    // 查询条件
    const filter = ref<WhManagerBsTbRiskHazardsHandleGetPageUsingPost.Body['query']>();

    const page = usePage({
      initPageSize: 15,
      fetch: async ({ pageSize, currentPage }) => {
        const { data } = await whManagerBsTbRiskHazardsHandleGetPageUsingPost({
          data: {
            size: pageSize,
            current: currentPage,
            query: { ...filter.value },
          },
        });
        console.log(data?.records)
        return {
          records: data?.records ?? [],
          total: data?.total ?? 0,
          pageSize,
        };
      },
    });

    watchDeep(filter, () => page.execute({ currentPage: 0 }));

    // 当前选中的列表项
    const selectedList = shallowRef<typeof page.records.value>([]);

    // 表格组件
    const tableRef = shallowRef<InstanceType<GlobalComponents['TableWidget']>>();

    // 详情弹窗组件
    const detailDialogRef = shallowRef<InstanceType<typeof DetailDialog>>();

    return {
      page,
      filter,
      selectedList,
      tableRef,
      detailDialogRef,
    };
  },
  {
    injectionKey: 'pageState',
  },
);
